<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GUPC &mdash; A UPC implementation for GCC</title>
<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
</head>

<body>

<h1>GNU Unified Parallel C (GUPC)</h1>

<img class="imgleft" src="gupc.png" width="109" height="130"
     alt="GUPC Logo" title="GUPC" />

<p>The GNU UPC project implements a compilation and execution environment for
programs written in the
<a href="https://github.com/Intrepid/GUPC">UPC (Unified Parallel C)</a>
language.  The GNU UPC compiler extends the capabilities of GCC.
The GUPC compiler is implemented as a C Language dialect translator, in
a fashion similar to the implementation of the GNU Objective C compiler.
</p>

<h2>Project Goal</h2>

<p>To encourage the use and adoption of UPC, GUPC provides a free,
generally available implementation of the UPC language dialect.
By implementing UPC, GUPC provides a high-level tool for creating
software targeted at parallel architectures.  The UPC language
makes it easier to express algorithms that run on parallel,
High Performance Computing (HPC) systems.
</p>

<p>The GUPC release includes a support library, <i>libupc</i>, and
extensions to the "C" parser that recognizes the UPC language syntax.
</p>

<h2>Features</h2>

<ul>
<li>UPC 1.2 specification compliant</li>
<li>UPC collectives library support</li>
<li>Fast bit packed pointer-to-shared support</li>
<li>Configurable UPC pointer-to-shared representation</li>
<li>Pthreads support (where each UPC thread is mapped to a pthread)</li>
<li>GUPC-provided libupc supports symmetric multiprocessor (SMP) systems</li>
<li>Libupc will associate each UPC thread with a particular
    CPU via Linux processor affinity operations
    and the NUMA library, when available.</li>
</ul>

<h2>Supported Platforms</h2>

<p>At this time, GUPC has been tested on the following platforms:
</p>

<ul>
<li>Intel x86_64 Linux uniprocessor and symmetric multiprocessor systems
    (Fedora Core 11 and Ubuntu 9.04)</li>
<li>Intel ia64 (Itanium) Linux uniprocessor and symmetric multiprocessor
    systems (SUSE Linux Enterprise Server 11)</li>
<li>Intel x86 Linux uniprocessor and symmetric multiprocessor systems
    (CentOS 5.3)</li>
<li>Intel x86 Apple Mac OS X uniprocessor and symmetric multiprocessor
    systems (Leopard 10.5.7+, Snow Leopard 10.6, and Lion 10.7)</li>
<li>Mips2 32-bit (-n32) ABI and mips4 64-bit (-n64) ABI (SGI IRIX 6.5)</li>
<li>Cray XT3/4/5 CNL and Catamount</li>
<li>As a front-end to the Berkeley UPC Berkeley UPC runtime
    on various High-Performance Computing (HPC) systems</li>
</ul>

<p>If you would like to learn of future ports to other platforms,
or would like to discuss the feasibility of implementing GUPC
on a platform of interest to you, we recommend that you join the
<a href="#gupc_discuss">GUPC discussion list</a>.
</p>

<h2>Download</h2>

<p>The <a href="https://github.com/Intrepid/GUPC/releases">latest
release</a> of GUPC is available for download.</p>

<p>Alternatively, you can access the GUPC branch in the GCC sources.</p>


<h2 id="gupc_discuss">The GNU UPC Discussion List</h2>

<p>The GNU UPC Discussion list provides a forum for tracking the status of UPC
compilers based on the GNU GCC compiler. Announcements of new compiler ports,
future plans, as well as known problems will be posted to the GUPC
discussion list. To subscribe to the GNU UPC list, send an email message to
<a href="mailto://gcc-upc-request@hermes.gwu.edu">
gcc-upc-request@hermes.gwu.edu</a>
with the single word "subscribe" (without the quotes)
in the body of the message.</p>

<h2>Contributing</h2>

<p>We encourage everyone to
<a href="../contribute.html">contribute changes</a>
and help test GUPC.  GUPC is currently on a development branch.
</p>

<h2>Reporting Bugs</h2>

<p>Bugs in GUPC should be <a href="../bugs/">reported to the GCC bug tracker</a>.
Please add "UPC" to the keywords field in the bug report.
</p>

<h2>Status</h2>

<dl>

<dt><b>February 28, 2010</b></dt>
<dd><p>Merged with the current GCC trunk, and
checked into the <b>gupc</b> branch.
</p></dd>

</dl>
</body>
</html>
